package com.yunbao.hujin.mymvpdemo2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.yunbao.hujin.mymvpdemo2.define.FieldView;
import com.yunbao.hujin.mymvpdemo2.define.ViewFind;
import com.yunbao.hujin.mymvpdemo2.mvp.RequestPresenter2;
import com.yunbao.hujin.mymvpdemo2.mvp.RequestView2;
import com.yunbao.hujin.mymvpdemo2.request.WeatherBean;

/**
 * 第三步：对应demo2
 * demo1的问题：
 * 1.是会内存泄露，因为persenter一直持有Activity，如果一个发了一个请求，
 * 但是网络有点慢，这个时候退出Activity，那么请求回来后还是会调用
 * Activity的回调方法，这里还是因为一直持有的问题
 * 2.如果已经退出了当前界面，这个请求也没有用了，这个时候我们可以断开请求
 * <p>
 * 解决问题：
 * 1.Presenter中增加绑定和解绑的方法来解决内存泄露和退出后还会回调的问题
 * 2、增加断开网络连接的方法
 *
 * 新问题：
 * 应用中肯定不可能只有一个模块，每个模块都对应着一个V层和P层，
 * 那这样的话每个Presenter中都要定义绑定和解绑的方法，
 * 而Activity中对应的也要调用这绑定和解绑的两个方法，代码冗余。
 */
public class MainActivity extends AppCompatActivity implements RequestView2 {

    @FieldView(R.id.tv_text)
    TextView textView;

    private RequestPresenter2 presenter2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewFind.bind(this);
        presenter2 = new RequestPresenter2();
        presenter2.attach(this);
    }

    //Button点击事件
    public void request(View view) {
        presenter2.clickRequest("101210101");
    }



    /********----View层RequestView2接口----************/
    @Override
    public void requestLoading() {
        textView.setText("请求中,请稍后...");
    }

    @Override
    public void resultSuccess(WeatherBean bean) {
        //成功
        textView.setText(bean.getWeatherinfo().toString());
    }

    @Override
    public void resultFailure(String result) {
        //失败
        textView.setText(result);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter2.detach();
        presenter2.interruptHttp();
    }
}
